home *** CD-ROM | disk | FTP | other *** search
- property pxobj, poutpoint
-
- on birth me
- return me
- end
-
- on mservice me
- set myxobj to the pxobj of me
- repeat while 1
- set conditioncode to myxobj(mservice)
- if conditioncode = 0 then
- exit repeat
- next repeat
- end if
- if conditioncode < 0 then
- myxobj(mcancel)
- exit repeat
- end if
- end repeat
- return conditioncode
- end
-
- on mpreparemedium me
- set myxobj to the pxobj of me
- if myxobj(mRespondsTo, "mPrepareMedium") = 0 then
- return 0
- else
- myxobj(mpreparemedium)
- return mservice(me)
- end if
- end
-
- on maudioenable me, achannel, aflag
- set myxobj to the pxobj of me
- if myxobj(mRespondsTo, "mAudioEnable") = 0 then
- return 0
- else
- myxobj(maudioenable, achannel, aflag)
- return mservice(me)
- end if
- end
-
- on mgetfirstframe me, atrack
- set myxobj to the pxobj of me
- if myxobj(mRespondsTo, "mGetFirstFrame") = 0 then
- return 0
- else
- return myxobj(mgetfirstframe, atrack)
- end if
- end
-
- on mgetlastframe me, atrack
- set myxobj to the pxobj of me
- if myxobj(mRespondsTo, "mGetLastFrame") = 0 then
- return 0
- else
- return myxobj(mgetlastframe, atrack)
- end if
- end
-
- on msearchto me, aframe
- if aframe < -2147483647 then
- return -999
- else
- set myxobj to the pxobj of me
- myxobj(msearchto, aframe)
- return mservice(me)
- end if
- end
-
- on mreadpos me
- set myxobj to the pxobj of me
- myxobj(mreadpos)
- mservice(me)
- return myxobj(mgetvalue)
- end
-
- on mgettrack me
- mreadpos(me)
- set myxobj to the pxobj of me
- if myxobj(mRespondsTo, "mGetTrack") = 0 then
- return 0
- else
- return myxobj(mgettrack)
- end if
- end
-
- on stepFrame me
- set myxobj to the pxobj of me
- myxobj(mreadstatus)
- set cc to mservice(me)
- if cc >= 0 then
- set stat to myxobj(mgetvalue)
- if (stat = 3) or (stat = 4) then
- myxobj(mplaycue)
- mservice(me)
- myxobj(mplaysegment)
- myxobj(mservice)
- end if
- end if
- end
-
- on minitialize me
- set the pxobj of me to applecd(mnew)
- set myxobj to the pxobj of me
- set cc to mpreparemedium(me)
- maudioenable(me, 1, 1)
- maudioenable(me, 2, 1)
- return cc
- end
-
- on mplay me, aninlist, adurationframes
- set myxobj to the pxobj of me
- if not voidp(aninlist) then
- if count(aninlist) > 1 then
- set inoffset to getAt(aninlist, 2)
- else
- set inoffset to 0
- end if
- set track to getAt(aninlist, 1)
- set intrackframes to mgetfirstframe(me, track)
- set inpoint to intrackframes + inoffset
- myxobj(msetinpoint, inpoint)
- if voidp(adurationframes) then
- set outpoint to mgetlastframe(me, track)
- else
- set outpoint to inpoint + adurationframes
- end if
- set the poutpoint of me to outpoint
- myxobj(msetoutpoint, outpoint)
- myxobj(mplaycue)
- mservice(me)
- end if
- myxobj(mplaysegment)
- myxobj(mservice)
- end
-
- on mcancelloop me
- set i to getOne(the actorList, me)
- if i > 0 then
- deleteAt(the actorList, i)
- end if
- end
-
- on mpause me
- set myxobj to the pxobj of me
- myxobj(mstill)
- return mservice(me)
- end
-
- on mframesleft me
- set myxobj to the pxobj of me
- mservice(me)
- set pos to myxobj(mgetvalue)
- return the poutpoint of me - pos
- end
-
- on mplayloop me, aninlist, adurationframes
- set cc to mplay(me, aninlist, adurationframes)
- append(the actorList, me)
- return cc
- end
-
- on mpauseloop me
- mcancelloop(me)
- return mpause(me)
- end
-
- on mreadstatus me
- set myxobj to the pxobj of me
- myxobj(mreadstatus)
- set cc to mservice(me)
- if cc < 0 then
- return -1
- else
- set stat to myxobj(mgetvalue)
- if stat <= 2 then
- return -1
- else
- if stat <= 4 then
- return 0
- else
- return 1
- end if
- end if
- end if
- end
-
- on mgettracklength me, atrack
- set myxobj to the pxobj of me
- return mgetlastframe(me, atrack) - mgetfirstframe(me, atrack)
- end
-
- on mdispose me
- nothing()
- end
-